@@ -56,9 +56,6 @@ $(document).ready -> |
||
56 | 56 |
# JSON Editor |
57 | 57 |
window.jsonEditor = setupJsonEditor() |
58 | 58 |
|
59 |
- # Select2 Selects |
|
60 |
- $(".select2").select2(width: 'resolve') |
|
61 |
- |
|
62 | 59 |
# Flash |
63 | 60 |
if $(".flash").length |
64 | 61 |
setTimeout((-> $(".flash").slideUp(-> $(".flash").remove())), 5000) |
@@ -155,6 +152,9 @@ $(document).ready -> |
||
155 | 152 |
|
156 | 153 |
$("#agent_type").change() if $("#agent_type").length |
157 | 154 |
|
155 |
+ # Select2 Selects |
|
156 |
+ $(".select2").select2(width: 'resolve') |
|
157 |
+ |
|
158 | 158 |
if $(".schedule-region") |
159 | 159 |
if $(".schedule-region").data("can-be-scheduled") == true |
160 | 160 |
showSchedule() |
@@ -71,7 +71,13 @@ class AgentsController < ApplicationController |
||
71 | 71 |
end |
72 | 72 |
|
73 | 73 |
def new |
74 |
- @agent = current_user.agents.build |
|
74 |
+ agents = current_user.agents |
|
75 |
+ |
|
76 |
+ if id = params[:id] |
|
77 |
+ @agent = agents.build_clone(agents.find(id)) |
|
78 |
+ else |
|
79 |
+ @agent = agents.build |
|
80 |
+ end |
|
75 | 81 |
|
76 | 82 |
respond_to do |format| |
77 | 83 |
format.html |
@@ -18,6 +18,7 @@ |
||
18 | 18 |
<% end %> |
19 | 19 |
<li><%= link_to '<i class="icon-chevron-left"></i> Back'.html_safe, agents_path %></li> |
20 | 20 |
<li><%= link_to '<i class="icon-pencil"></i> Edit'.html_safe, edit_agent_path(@agent) %></li> |
21 |
+ <li><%= link_to '<i class="icon-plus"></i> Clone'.html_safe, new_agent_path(id: @agent) %></li> |
|
21 | 22 |
|
22 | 23 |
<% if @agent.can_be_scheduled? || @agent.events.count > 0 %> |
23 | 24 |
<li class="dropdown"> |
@@ -46,6 +46,22 @@ describe AgentsController do |
||
46 | 46 |
end |
47 | 47 |
end |
48 | 48 |
|
49 |
+ describe "GET new with :id" do |
|
50 |
+ it "opens a clone of a given Agent" do |
|
51 |
+ sign_in users(:bob) |
|
52 |
+ get :new, :id => agents(:bob_website_agent).to_param |
|
53 |
+ assigns(:agent).attributes.should eq(users(:bob).agents.build_clone(agents(:bob_website_agent)).attributes) |
|
54 |
+ end |
|
55 |
+ |
|
56 |
+ it "only allows the current user to clone his own Agent" do |
|
57 |
+ sign_in users(:bob) |
|
58 |
+ |
|
59 |
+ lambda { |
|
60 |
+ get :new, :id => agents(:jane_website_agent).to_param |
|
61 |
+ }.should raise_error(ActiveRecord::RecordNotFound) |
|
62 |
+ end |
|
63 |
+ end |
|
64 |
+ |
|
49 | 65 |
describe "GET edit" do |
50 | 66 |
it "only shows Agents for the current user" do |
51 | 67 |
sign_in users(:bob) |